package fiado.dao.sqlserver;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

import fiado.bean.Pessoa;
import fiado.exception.DaoException;


public class PessoaDAOTest {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		sc.useDelimiter("\\n");
		PessoaDAO pessoaDAO = new PessoaDAO();
		try {
			Pessoa pessoa = leDadosPessoa(sc);
			
			pessoaDAO.criar(pessoa);
			
			System.out.println("Pessoa criada:" + pessoa);
			
			
			System.out.println("Digite o id para consulta:");
			int idPessoaParaConsulta = Integer.parseInt(sc.next().trim());
			
			pessoa = pessoaDAO.buscarPorId(idPessoaParaConsulta);
			System.out.println(pessoa);
			
			
			listarPessoas(pessoaDAO);
			
			
			System.out.println("Digite o id para apagar:");
			idPessoaParaConsulta = Integer.parseInt(sc.next().trim());
			
			pessoaDAO.apagar(idPessoaParaConsulta);
			listarPessoas(pessoaDAO);
			
			System.out.println("Digite o id para atualizar:");
			idPessoaParaConsulta = Integer.parseInt(sc.next().trim());
			pessoa = pessoaDAO.buscarPorId(idPessoaParaConsulta);
			System.out.println(pessoa);
			pessoa = leDadosPessoa(sc);
			pessoa.setId(idPessoaParaConsulta);
			
			pessoaDAO.salvar(pessoa);
			
			System.out.println("Bucando registro atualizado");
			pessoa = pessoaDAO.buscarPorId(idPessoaParaConsulta);
			System.out.println(pessoa);
			
		} catch (DaoException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		} finally {
			sc.close();
		}
		
	}

	private static Pessoa leDadosPessoa(Scanner sc)
			throws ParseException {
		Pessoa pessoa = new Pessoa();
		System.out.println("Digite o prenome");
		String prenome = sc.next().trim();
		
		System.out.println("Digite o sobrenome");
		String sobrenome = sc.next().trim();
		
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		System.out.println("Digite a data de nascimento");
		Date dataNasc = sdf.parse(sc.next());	
		
		System.out.println("Digite a data de falecimento");
		Date dataFalec = null;
		String dataFalecStr = sc.next();
		if (dataFalecStr != null && !"".equals(dataFalecStr.trim())) {
			dataFalec = sdf.parse(dataFalecStr);
		}
		
		
		pessoa.setPrenome(prenome);
		pessoa.setSobrenome(sobrenome);
		pessoa.setDataNascimento(dataNasc);
		pessoa.setDataFalecimento(dataFalec);
		
		return pessoa;
	}

	private static void listarPessoas(PessoaDAO pessoaDAO) throws DaoException {
		System.out.println("\n\nLista de todos as pessoas");
		List<Pessoa> listaTodos = pessoaDAO.buscarTodos();
		for (Pessoa p : listaTodos) {
			System.out.println(p);
		}
	}

}
